/**
 * 群聊客户端类
 * 该类负责创建客户端Socket连接，并向服务器发送消息
 */
package org.codingq92.pritice.socket.group;

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

/**
 * 群聊客户端
 *
 * @author: CodingQ92
 * @date: 2025/6/22 23:13
 */
public class GroupChatClient {
    /**
     * 客户端主程序
     * 创建Socket连接，启动读取服务器消息的线程，并循环读取用户输入的消息发送到服务器
     *
     * @param args 命令行参数
     * @throws Exception 如果Socket连接或IO操作失败
     */
    public static void main(String[] args) throws Exception {
        // 创建Socket连接到本地的18000端口
        Socket socket = new Socket("127.0.0.1", 18000);
        // 启动读取服务器消息的线程
        new ClientReadThread(socket).start();

        // 获取Socket的输出流
        OutputStream outputStream = socket.getOutputStream();
        // 创建DataOutputStream用于发送数据
        DataOutputStream dataOutputStream = new DataOutputStream(outputStream);

        // 创建Scanner用于读取用户输入
        Scanner scanner = new Scanner(System.in);
        // 无限循环，直到用户输入"exit"
        while (true) {
            // 提示用户输入消息
            System.out.println("请输入你要群发的消息：");
            // 读取用户输入的消息
            String msg = scanner.nextLine();
            // 如果用户输入"exit"，则退出循环
            if ("exit".equals(msg)) {
                System.out.println("退出群聊");
                break;
            }
            // 发送消息到服务器
            dataOutputStream.writeUTF(msg);
            // 刷新输出流，确保消息即时发送
            dataOutputStream.flush();
        }
    }
}
